package utilidades;


import java.util.Properties;


import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


/** Clase que permite el envio del email.
 * @author kevincifuentes
 *
 */
public class EnvioEmail {


	String d_email = "programatrading@gmail.com",
			d_password = "guachupo69";


	
	/** Constructor con parámetros que permite el envio de un email.
	 * @param from Desde que email se envia el mensaje
	 * @param pass La contraseña de la cuenta de email desde donde se enviará
	 * @param host El host de envio de donde se enviará el email
	 * @param port Puerto a utilizar para enviar el email
	 * @param to Email de destino del mensaje
	 * @param subject Asunto del mensaje
	 * @param text El texto a enviar
	 */
	public void send(String from, String pass, String host, String port, String to, String subject, String text) {

		Properties props = new Properties();

		// Lee el fichero de propiedades.

		props.put("mail.smtp.user", from);
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.port", port);
		props.put("mail.smtp.starttls.enable", "true");
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.socketFactory.port", port);
		props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.socketFactory.fallback", "false");

		SecurityManager security = System.getSecurityManager();

		try {
			Authenticator auth = new SMTPAuthenticator();
			Session session = Session.getInstance(props, auth);
			MimeMessage msg = new MimeMessage(session);

			msg.setText(text);
			msg.setSubject(subject);
			msg.setFrom(new InternetAddress(from));
			msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
			Transport.send(msg);

		} catch (Exception mex) {
			mex.printStackTrace();
		}
	}

	/** Comprueba que el email y contraseña introducidos son correctos y válidos
	 * @author kevincifuentes
	 *
	 */
	public class SMTPAuthenticator extends javax.mail.Authenticator {

		public PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(d_email, d_password);
		}
	}

	/*
	public void main(String[]args)
	{
		EnvioEmail eE= new EnvioEmail();
		eE.send("programatrading@gmail.com", "guachupo69", "smtp.gmail.com", "587", "inigarcia9@gmail.com", "Hola surmano", "que tal harto?");
	}*/
}
